import axios from 'axios';
import store from '@/store';
import router from '@/router';
import { ElMessage } from 'element-plus';

//是否允许跨域时携带cookie信息[不允许]
axios.defaults.withCredentials = false;

let instance = axios.create();
let url;
// http请求拦截 request 拦截器
instance.interceptors.request.use(config=>{
  // 每次发送请求之前判断用户是否在线     
  // 如果在线，则统一在http请求的header都加上token
  //用户在线
  if(store.getters.hasOnline){
	  config.headers.Authorization = store.getters.token;
  }
  url = config.url;
  // console.log("config",config);
  return config;  
},error=>{
  return Promise.error(error);
});


// http响应拦截 response 拦截器
instance.interceptors.response.use(
  response => {
    //拦截响应，做统一处理
    return response
  },
  //错误处理	
  error => {
    switch(error.response.status){
	  case 400:
		ElMessage.error({message: '账号或密码错误或账户已被冻结！'});
	  break;
      case 401:
	      //token失效，弹出提示
		  // console.log(url);
		  if(url=='/oauth/token'){
			  ElMessage.error({message: '该账号不存在！'});
		  }else{
			  ElMessage.error({message: '登录信息已失效,请重新登录！'});
		  }
		  store.commit('outlogin');//清除用户登录痕迹
		  //跳转回首页
		  router.push({name:'main'});
      break;
      case 403:
	    ElMessage.error({message: '非法闯入，禁止访问！'});
		//console.log("非法闯入，禁止访问！");
	  break;
	  default:
	    ElMessage.error({message: '请求错误！'});
		//console.log("请求错误！");
	  break;
	}
    return Promise.reject(error.response.status) // 返回接口返回的错误信息
  }
)

export default instance;//导出instance
